# js601_1_x_rule.py
import sys
from pathlib import Path

# 获取 template 目录的绝对路径（根据实际结构调整）
current_file = Path(__file__)
template_dir = current_file.parent.parent  # 上两级目录


sys.path.append(str(template_dir))

# 现在可以正常导入
from utils import date_offset_handler,generate_random_data_with_params
from base_rule import BaseRule
from DataProcessor import DataProcessor
import random
import pandas as pd

class JS601_1_Rule(BaseRule):
    def __init__(self, project_info):
        super().__init__("JS601_1", project_info)
        instance_values = project_info.get("instance_values", {})
        # 桩号、部位
        self.add_field("桩号、部位", lambda _: self.project_info['施工部位'])

        # 日期字段
        self.add_field("施工日期", date_offset_handler(0), data_type="date", format="%Y年%m月%d日")
        self.add_field("检测、记录日期", date_offset_handler(0), data_type="date", format="%Y年%m月%d日")
        
        # 混凝土强度等级、用量字段
        self.add_field("混凝土强度（砂浆）等级", lambda _: instance_values.get('混凝土强度（砂浆）等级'))
        self.add_field("设计混凝土（砂浆）用量", lambda _: instance_values.get('设计混凝土（砂浆）用量'))
        self.add_field("实际混凝土（砂浆）用量", lambda _: instance_values.get('实际混凝土（砂浆）用量'))
        
        # 特有字段（仅“基础”有）
        
        self.add_field("拌和物塌落度", generate_random_data_with_params(
            frequency=3, range_param=[140, 180], as_string=True, decimal=0))

        # 签字日期字段
        self.add_field("质检负责人日期", date_offset_handler(0), data_type="date", format="%Y年%m月%d日")
        self.add_field("自检员日期", date_offset_handler(0), data_type="date", format="%Y年%m月%d日")
    
    def process(self,**kwargs):
        """
        封装处理逻辑，直接返回结果
        :param data_file_path: 数据文件路径（Excel/CSV）
        :return: 处理后的 DataFrame
        """
        data_file_path=current_file.parent / '模板数据.xlsx'
        df = pd.read_excel(data_file_path)
        rules = self.get_rules()

        processor = DataProcessor(base_data=df, project_info=self.project_info, rules=rules)
        results = processor.process_dataframe(df)

        return results


if __name__ == "__main__":
    PROJECT_BASE_INFO ={
    '施工单位':'浙江交工宏途交通建设有限公司',
    '监理单位':'浙江浙中建设工程管理有限公司',
    '单位工程':'路基工程',
    '分部工程':'涵洞、通道',
    '分项工程':'主体结构',
    '施工日期':'2024/05/31',
    '施工部位':'K59+639圆管涵',
    '设计坐标(X,Y)':(3243273.926,509154.842),
    '长':44.5,#圆管涵长度
    '宽':4,#圆管涵宽度
    '基础宽度':2759,
    '基础厚度':300,
    '基础顶高程':66035,
    '设计高程':66,#基础高程
    '断面尺寸长度':1250,
    '断面尺寸宽度（直径）':275.9,
    '断面尺寸高（厚）度':30,
    '混凝土强度（砂浆）等级':'C25',
    '设计混凝土（砂浆）用量':'15',
    '实际混凝土（砂浆）用量':'16',

} 

    rule = JS601_1_Rule(PROJECT_BASE_INFO)
    results = rule.process()
    print(results)